package br.com.maps.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.Validations;

/**
 * Action de exemplo para o tutorial de Struts 2 com annotation.
 * 
 * @author finx
 * @created Oct 19, 2009
 */
public class HelloWorldAction extends ActionSupport {

    private String requisicao;

    private String resposta;

    /**
     * Executa a Action.
     * 
     * @return resultado da execução da Action.
     */
    @Override
    @Action(value = "/helloworld", results = { @Result(name = "success", location = "/resposta.jsp"), @Result(name = "input", location = "/index.jsp") })
    @Validations(requiredStrings = @RequiredStringValidator(fieldName = "requisicao", message = "Campo obrigatório"))
    public String execute() {
        this.resposta = "Olá! Eu estou executando uma ação do usuário, com a seguinte requisição: ";
        return "success";
    }

    /**
     * Retorna a mensagem da requisição.
     * 
     * @return a mensagem da requisição.
     */
    public String getRequisicao() {
        return requisicao;
    }

    /**
     * Define a mensagem da requisição passada como parâmetro.
     * 
     * @param requisicao a mensagem da requisição a ser definida.
     */
    public void setRequisicao(String requisicao) {
        this.requisicao = requisicao;
    }

    /**
     * Retorna a resposta da requisição, chamada pelo componente <i>s:property</i> do jsp.
     * 
     * @return a resposta da requisição, chamada pelo componente <i>s:property</i> do jsp.
     */
    public String getResposta() {
        return this.resposta + " [" + this.getRequisicao() + "].";
    }

}
